package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.Menu;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface MenuDao {

    List<Menu> findMainMenus(List<Integer> menuIdsArray) ;

    Menu findChildMenu(Map<String, Integer> map);

    List<Menu> findMainMenusByUserId(Integer UserId);

    List<Menu> findChildMenusByUserIdAndParentMenuId(Map<String, Integer> map);

    /**
     * 分页查询 使用插件工具
     * @param queryString
     * @return
     */
    Page<Menu> selectByCondition(String queryString);

    /**
     * 通过父id查询子菜单
     * @param parentMenuId
     * @return
     */
    List<Menu> findchildren(Integer parentMenuId);

    /**
     * 查询父类菜单信息
     * @return
     */
    List<Menu> findAllParentMenu();

    /**
     * 通过id查询父类菜单路径信息
     * @param id
     * @return
     */
    String findPathById(Integer id);

    /**
     * 通过名称查询菜单是否存在
     * @param name
     * @return
     */
    Long findByName(String name);

    /**
     * 通过优先级查询菜单是否存在
     * @param map
     * @return
     */
    Integer findByPriority(Map map);


    /**
     * 新增菜单
     * @param menu
     */
    void add(Menu menu);

    /**
     * 查询主菜单最大项
     * @return
     */
    String findMaxPath();

    /**
     * 通过id查询菜单信息
     * @param id
     * @return
     */
    Menu findById(Integer id);

    /**
     * 更新菜单
     * @param menu
     */
    void edit(Menu menu);

    /**
     * 查询多对多表格数据信息
     * @param id
     * @return
     */
    Integer findRoleAndMenuById(Integer id);

    /**
     * 删除菜单
     * @param id
     */
    void delete(Integer id);

    Set<Menu> findAll();

    List<Integer> findChildMenuByParentMenuId(Integer menuId);
}
